package day_2022_4_to_7.nowcoder;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

/**
 * 从上往下打印二叉树
 * @author haomin
 * @date 2022/04/20 21:58
 **/
public class PrintFromTopToBottom_19f {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        if(root == null){
            return new ArrayList<>();
        }
        // 创建list数组
        ArrayList<Integer> list = new ArrayList<>();
        // 创建queue队列
        Queue<TreeNode> queue = new LinkedList<>();

        // 先将根节点入队
        queue.offer(root);
        // 当队列不为空时
        while (!queue.isEmpty()){
            // 队首元素出队并存入list数组中
            TreeNode node = queue.poll();
            list.add(node.val);

            if(node.left != null){
                // 将该队首节点右孩子入队
                queue.offer(node.left);
            }
            if(node.right != null){
                // 将该队首节点左孩子入队
                queue.offer(node.right);
            }
        }
        return list;
    }
}